#!/bin/bash
# 自动构建项目并完成自动发布 Docker

# 查看当前目录下是否存在 target 文件夹
if [ -d "target" ]; then
  # 存在则删除
  rm -rf target > /dev/null 2>&1
  echo "target 文件夹已删除"
fi

# 执行打包命令
mvn clean package > /dev/null 2>&1

# 检查打包结果
if [ $? -eq 0 ]; then
  echo "打包成功"
  else
    echo "打包失败，请检查代码"
    exit 1
fi

# 查看 Docker 环境中是否存在 docker 容器
docker compose ls | grep vue3-admin-server > /dev/null 2>&1

# 如果存在则停止并删除容器
if [ $? -eq 0 ]; then
  docker compose down > /dev/null 2>&1
  echo "已停止并且删除正在运行的容器"
  else
    echo "当前环境中不存在正在运行的容器"
fi

# 查看 Docker 环境中是否存在当前工程的镜像
docker images | grep server-image > /dev/null 2>&1

# 如果存在则删除镜像
if [ $? -eq 0 ]; then
  docker rmi server-image > /dev/null 2>&1
  echo "已删除当前工程镜像"
  else
    echo "当前环境中不存在当前工程镜像"
fi

# 将当前工程构建为 Docker 镜像
docker build -t server-image . > /dev/null 2>&1

# 判断是否构建成功
if [ $? -eq 0 ]; then
  echo "Docker 镜像构建成功"
  else
    echo "Docker 镜像构建失败"
    exit 1
fi

# 执行 docker-compose 命令启动容器
docker compose up -d > /dev/null 2>&1

docker compose ls | grep vue3-admin-server > /dev/null 2>&1
# 判断是否启动成功
if [ $? -eq 0 ]; then
  echo "容器启动成功"
  else
    echo "容器启动失败"
    exit 1
fi